package top.itbook.util;

import java.security.Provider;

/**
 * 返回对应加密算法类实例化对象 - 因为所有加密算法默认继承了Provider作为父类，所以方法返回Provider类型，获取后可进行强转
 * 设计模式：工厂模式
 */
public class EncryptionAlgorithms {
    /**
     * 返回对应的加密算法实例化对象
     * @param name 想要获取的加密算法对象名
     * @return 加密算法实现类对应的实例化对象地址 若参数传递不正确可能导致返回null值
     */
    public static Provider createEncryptionAlgorithms(String name){
        switch(name){
            case "MD2":
                return MD2.getInstance();
            case "MD5":
                return MD5.getInstance();
            case "SHA-1":
                return SHA1.getInstance();
            case "SHA-224":
                return SHA224.getInstance();
            case "SHA-256":
                return SHA256.getInstance();
        }
        return null;
    }
}
